const express=require("express");

var md5 = require('md5');

// express提供了一个Router()方法
// 创建一个路由   把方法就不绑在app上绑在route上
const route =express.Router();


//引入正则校验中间件
const addAdminReg = require("../middleware/addAdminReg")

// 引入权限校验的中间件
const isLoginMiddle=require("../middleware/isLoginMiddle")



// 引入数据库集合对象  是在这个路由中引入的拿过来
const adminModel=require("../db/model/adminModel")
 



// 添加管理员接口
// 从第二个参数开始,在中间可以添加多个回调函数,是中间件
route.post("/addAdmin",isLoginMiddle,addAdminReg,async(req,res)=>{
  const {
    adminName,
    password,
    regTime
  }=req.body;

  try{
    // 拿着用户名去数据库的adminModel集合中查询是否存在,find如果查询不到返回[]空数组,空数组为true,两个方法要区分
    // 拿着用户名去数据库的adminModel集合中查询是否存在,findOne如果查询不到返回null

    // mongod数据库中集合的方法返回的也是promise实例

    const findResult = await adminModel.findOne({
      adminName
    })
    console.log(findResult)
    // 如果查询到了,则直接响应该用户名已经注册
    if (findResult) {
      return res.send({
        code: 10001,
        msg: "添加管理员-用户已经被注册",
        data: null
      })
    }
    // 如果没有查询到,则向数据库添加该数据
    await adminModel.create({
      adminName,
      password:md5(password+"123"),
      regTime
    })

    res.send({
      code: 10000,
      msg: "添加管理员-添加成功",
      data: null
    })

  } catch(e){
    // console.log("添加管理员中出现了异常" + e.message);
    res.send({
      code: 10002,
      msg: "添加管理员-服务端异常",
      data: null
    })
  }
})

// 把路由暴露出去,把路由引入到入口文件,挂载到app文件
module.exports = route;